<html>
 <head>
  <meta charset="utf-8"/>
  <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"/>
  <title>
   谢益辉: 开发R程序包之忍者篇  | 数螺 | NAUT IDEA
  </title>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" rel="stylesheet"/>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
  <style type="text/css">
   #xmain img {
                  max-width: 100%;
                  display: block;
                  margin-top: 10px;
                  margin-bottom: 10px;
                }

                #xmain p {
                    line-height:150%;
                    font-size: 16px;
                    margin-top: 20px;
                }

                #xmain h2 {
                    font-size: 24px;
                }

                #xmain h3 {
                    font-size: 20px;
                }

                #xmain h4 {
                    font-size: 18px;
                }


                .header {
	           background-color: #0099ff;
	           color: #ffffff;
	           margin-bottom: 20px;
	        }

	        .header p {
                  margin: 0px;
                  padding: 10px 0;
                  display: inline-block;  
                  vertical-align: middle;
                  font-size: 16px;
               }

               .header a {
                 color: white;
               }

              .header img {
                 height: 25px;
              }
  </style>
  <script src="http://cdn.bootcss.com/jquery/3.0.0/jquery.min.js">
  </script>
  <script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript">
   MathJax.Hub.Config({
          tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]},
          TeX: {equationNumbers: {autoNumber: "AMS"}}
        });
  </script>
  <script src="http://nautstatic-10007657.file.myqcloud.com/static/css/readability.min.js" type="text/javascript">
  </script>
  <script type="text/javascript">
   $(document).ready(function() {
                 var loc = document.location;
                 var uri = {
                  spec: "http://cos.name/2011/05/write-r-packages-like-a-ninja/",
                  host: "http://cos.name",
                  prePath: "http://cos.name",
                  scheme: "http",
                  pathBase: "http://cos.name/"
                 };
    
                 var documentClone = document.cloneNode(true);
                 var article = new Readability(uri, documentClone).parse();
     
                 document.getElementById("xmain").innerHTML = article.content;
                });
  </script>
  <!-- 1466438816: Accept with keywords: (title(0.166666666667):忍者,门户网站,程序包,统计学,服务平台,中国, topn(0.2):版本控制,语言,路径,程序员,R语言,文件夹,空间,工具,目录,忍者,文件,示例,文档,文章,命名,版本,源代码,函数,对象,程序包,用户,快捷键,问题,编译,代码,程序,字段,命令行,软件,邮件).-->
 </head>
 <body class="single single-post postid-2766 single-format-standard sidebar" onload="">
  <div class="header">
   <div class="container">
    <div class="row">
     <div class="col-xs-6 col-sm-6 text-left">
      <a href="/databee">
       <img src="http://nautidea-10007657.cos.myqcloud.com/logo_white.png"/>
      </a>
      <a href="/databee">
       <p>
        数螺
       </p>
      </a>
     </div>
     <div class="hidden-xs col-sm-6 text-right">
      <p>
       致力于数据科学的推广和知识传播
      </p>
     </div>
    </div>
   </div>
  </div>
  <div class="container text-center">
   <h1>
    谢益辉: 开发R程序包之忍者篇
   </h1>
  </div>
  <div class="container" id="xmain">
   <div class="hfeed site" id="page">
    <header class="site-header" id="masthead" role="banner">
     <div id="cos-logo">
      <a href="http://cos.name/">
       <img src="http://cos.name/wp-content/themes/COS-kermesinus/images/headers/cos-logo.png"/>
      </a>
     </div>
     <div class="navbar" id="navbar">
      <nav class="navigation main-navigation" id="site-navigation" role="navigation">
       <h3 class="menu-toggle">
        菜单
       </h3>
       <a class="screen-reader-text skip-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#content" title="跳至内容">
        跳至内容
       </a>
       <div class="menu-%e6%88%91%e7%9a%84%e8%8f%9c%e5%8d%95-container">
        <ul class="nav-menu" id="menu-%e6%88%91%e7%9a%84%e8%8f%9c%e5%8d%95">
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-4746" id="menu-item-4746">
          <a href="http://cos.name">
           主页
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-8120" id="menu-item-8120">
          <a href="http://cos.name/cn">
           论坛
          </a>
          <ul class="sub-menu">
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8124" id="menu-item-8124">
            <a href="http://cos.name/cn/wp-login.php?action=register">
             论坛注册
            </a>
           </li>
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8125" id="menu-item-8125">
            <a href="http://cos.name/cn/wp-login.php">
             论坛登录
            </a>
           </li>
          </ul>
         </li>
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8110" id="menu-item-8110">
          <a href="http://cos.name/books/">
           图书资料
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8112" id="menu-item-8112">
          <a href="http://cos.name/videos">
           视频教程
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8333" id="menu-item-8333">
          <a href="http://cos.name/salon/">
           统计沙龙
          </a>
         </li>
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8111" id="menu-item-8111">
          <a href="http://cos.name/chinar/">
           R语言会议
          </a>
         </li>
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8109" id="menu-item-8109">
          <a href="http://cos.name/training/">
           讲座与培训
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8115" id="menu-item-8115">
          <a href="http://cos.name/cn/forum/comprehensive/job/">
           招聘信息
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4780" id="menu-item-4780">
          <a href="http://cos.name/about">
           关于我们
          </a>
          <ul class="sub-menu">
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8113" id="menu-item-8113">
            <a href="http://cos.name/2008/11/how-to-work-with-cos/">
             加入我们
            </a>
           </li>
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8119" id="menu-item-8119">
            <a href="http://cos.name/donate/">
             赞助我们
            </a>
           </li>
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8114" id="menu-item-8114">
            <a href="http://cos.name/cn/forum/26">
             项目合作
            </a>
           </li>
          </ul>
         </li>
        </ul>
       </div>
       <form action="http://cos.name/" class="search-form" method="get" role="search">
        <label>
         <span class="screen-reader-text">
          搜索：
         </span>
        </label>
       </form>
      </nav>
      <!-- #site-navigation -->
     </div>
     <!-- #navbar -->
    </header>
    <!-- #masthead -->
    <div class="site-main" id="main">
     <div class="content-area" id="primary">
      <div class="site-content" id="content" role="main">
       <article class="post-2766 post type-post status-publish format-standard hentry category-packages tag-doxygen tag-emacs tag-ess tag-git tag-rd2roxygen tag-roxygen tag-r tag-r-language tag-svn tag-vignette tag-457 tag-456 tag-463 tag-377" id="post-2766">
        <header class="entry-header">
         <h1 class="entry-title">
          开发R程序包之忍者篇
         </h1>
         <div class="entry-meta">
          <span class="date">
           <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/" rel="bookmark" title="链向开发R程序包之忍者篇的固定链接">
            <time class="entry-date" datetime="2011-05-29T13:04:26+00:00">
             2011/05/29
            </time>
           </a>
          </span>
          <span class="categories-links">
           <a href="http://cos.name/category/software/packages/" rel="category tag">
            统计软件
           </a>
          </span>
          <span class="tags-links">
           <a href="http://cos.name/tag/doxygen/" rel="tag">
            Doxygen
           </a>
           、
           <a href="http://cos.name/tag/emacs/" rel="tag">
            Emacs
           </a>
           、
           <a href="http://cos.name/tag/ess/" rel="tag">
            ESS
           </a>
           、
           <a href="http://cos.name/tag/git/" rel="tag">
            GIT
           </a>
           、
           <a href="http://cos.name/tag/rd2roxygen/" rel="tag">
            Rd2roxygen
           </a>
           、
           <a href="http://cos.name/tag/roxygen/" rel="tag">
            roxygen
           </a>
           、
           <a href="http://cos.name/tag/r%e5%8c%85/" rel="tag">
            R包
           </a>
           、
           <a href="http://cos.name/tag/r%e6%96%87%e6%a1%a3/" rel="tag">
            R文档
           </a>
           、
           <a href="http://cos.name/tag/r-language/" rel="tag">
            R语言
           </a>
           、
           <a href="http://cos.name/tag/svn/" rel="tag">
            SVN
           </a>
           、
           <a href="http://cos.name/tag/vignette/" rel="tag">
            Vignette
           </a>
           、
           <a href="http://cos.name/tag/%e5%88%9b%e5%bb%bar%e5%8c%85/" rel="tag">
            创建R包
           </a>
           、
           <a href="http://cos.name/tag/%e5%91%bd%e5%90%8d%e7%a9%ba%e9%97%b4/" rel="tag">
            命名空间
           </a>
           、
           <a href="http://cos.name/tag/%e7%89%88%e6%9c%ac%e6%8e%a7%e5%88%b6%e5%b7%a5%e5%85%b7/" rel="tag">
            版本控制工具
           </a>
           、
           <a href="http://cos.name/tag/%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f/" rel="tag">
            环境变量
           </a>
           、
           <a href="http://cos.name/tag/%e8%bd%af%e4%bb%b6%e6%96%87%e6%a1%a3/" rel="tag">
            软件文档
           </a>
          </span>
          <span class="author vcard">
           <a class="url fn n" href="http://cos.name/author/yihui/" rel="author" title="查看所有由谢益辉发布的文章">
            谢益辉
           </a>
          </span>
         </div>
         <!-- .entry-meta -->
        </header>
        <!-- .entry-header -->
        <div class="entry-content">
         <p>
          作为一个伪程序员，我在做与代码有关的事情时，总是抱以一个念头，即“简化手工劳动到极致”。在这篇文章里，我介绍一下目前我认为最简化的开发R包的流程。本站作者胡荣兴曾经在09年写过一篇开发R包的文章“
          <a href="http://cos.name/2009/02/create-r-packages-under-windows/" target="_blank" title="在Windows中创建R的包的步骤">
           在Windows中创建R的包的步骤
          </a>
          ”，其中小部分内容随着R本身的更新已经过时，该文面向Windows，而且介绍的都是一些正统方法，这里我介绍一条“忍者”之路，希望对大家开发R程序包有所帮助。这篇文章本来是去年年底打算写的，时至今日
          <a href="http://cos.name/2011/04/chinar-2011/" target="_blank" title="第四届中国R语言会议通知">
           第四届中国R语言会议
          </a>
          正在人民大学轰轰隆隆召开，索性把它写完，算是一份不到场的报告吧。
         </p>
         <p>
          在我看来，R的扩展性主要体现在R包中，利用附加包的形式，我们可以把一些常规的、模式化的工作打包起来供日常使用，在R包中我们还可以为函数编写文档和说明，这样可以避免将来忘记一个函数是做什么的以及怎么用的（忘记了就查帮助，
          <code>
           ?function.name
          </code>
          ），文档是程序的重要组成部分，我个人常常认为写文档的难度不亚于写代码；此外，R包还体现了R的另一点扩展性，即它能融合其它底层语言，典型的就是C语言、C++和Fortran，但一般用户可能用不到这些功能，下文仅简要介绍一下。
         </p>
         <h2>
          一、工具
         </h2>
         <p>
          对Linux和Mac用户来说，只要装好了R，开发R包的工具就已经具备，可跳过本节。Windows用户除了安装R之外，还需要
          <a href="http://www.murdoch-sutherland.com/Rtools/" target="_blank">
           Rtools
          </a>
          和一套LaTeX程序，典型的如
          <a href="http://www.miktex.org" target="_blank">
           MikTeX
          </a>
          。安装Rtools的过程中有一步需要注意，就是修改环境变量PATH，这个选项是需要选上的。对于R本身，还需要把它的bin路径放到环境变量PATH中去。说了半天，什么是PATH？这是个让明白的人抓狂、不明白的人迷茫的问题，不过找它比找拉登可能还是稍微容易一点：
         </p>
         <p style="text-align: center;">
          “我的电脑”（右键）–&gt;“属性”–&gt;“高级”–&gt;“环境变量”–&gt;“系统变量”–&gt;PATH
         </p>
         <p>
          这里我们可以看到一连串路径。为什么系统要有个PATH变量？原因就是为了能够脱离程序的绝对路径以命令行方式来运行程序，这样使得程序员不必担心你的程序装在什么位置。当你在命令行窗口（*nix系统下叫终端，Terminal）中敲入一个命令时，系统就会从这一系列的PATH路径中去找你敲的这个程序是否存在，如果存在就运行它。“开始”–&gt;“运行”（或者快捷键Win + R），输入
          <code>
           cmd
          </code>
          回车运行，就会打开一个命令行窗口。如果你从来没用过这玩意儿，那你肯定是Windows深度中毒者，不妨先玩玩
          <code>
           dir
          </code>
          、
          <code>
           cd ..
          </code>
          等命令。
         </p>
         <p>
          前面说要把R的bin路径加入PATH，这个路径在哪儿？如果你记不住自己的R装在哪儿，没关系，打开R，输入
          <code>
           R.home('bin')
          </code>
          就知道了。通常是类似于C:\Program Files\R\R-2.xx.x\bin\这样一个路径。说到这里，我还得绕道再说一句：安装R的时候尽量装在一个不带版本号的目录下，否则将来更新很麻烦，而且每次装新版本的R还得再修改PATH变量，因为bin路径变了。关于这一点，我只能说R core们都太严谨了，上次我在R-devel邮件列表里被一群人打了个落花流水，他们死活都不能接受把R的安装路径改成默认不带版本号的。
         </p>
         <p>
          设置好R的路径之后，为了测试各种设置是否齐备，可以打开命令行窗口，输入一些常用命令看看能否执行：
         </p>
         <pre class="brush: plain">R --version
ls
gcc --version</pre>
         <p>
          如果这些都没问题，就可以进入下一节了。这里敲R对命令行来说，就是看看PATH中那些路径里有没有一个路径下包含R.exe或者R.bat之类的可执行文件，这就是所谓的“脱离绝对路径运行程序”。由于*nix系统的程序管理方式和Windows不同（可执行文件通常统一放在/bin/或者/usr/bin/目录下），所以通常没有这些痛苦。
         </p>
         <h2>
          二、R包结构
         </h2>
         <p>
          写R包最好的参考莫过于R自身的手册“
          <a href="http://cran.r-project.org/doc/manuals/R-exts.html" target="_blank">
           Writing R Extensions
          </a>
          ”（下文简称R-exts）。在R中打开HTML帮助（
          <code>
           help.start()
          </code>
          ），就可以看见这本手册，内容很长，不过大部分都是普通用户不必关心的。我的建议如下：对新手而言，必须要了解R包的结构，所以
          <a href="http://cran.r-project.org/doc/manuals/R-exts.html#The-DESCRIPTION-file" target="_blank">
           1.1.1节
          </a>
          和
          <a href="http://cran.r-project.org/doc/manuals/R-exts.html#Package-subdirectories" target="_blank">
           1.1.3节
          </a>
          必读，而整个
          <a href="http://cran.r-project.org/doc/manuals/R-exts.html#Writing-R-documentation-files" target="_blank">
           第2节
          </a>
          可能是将来需要反复参考的（除非你记性很好）；已经上路的用户可以接着看一些高级话题，如命名空间（
          <a href="http://cran.r-project.org/doc/manuals/R-exts.html#Package-name-spaces" target="_blank">
           1.6节
          </a>
          ）和底层语言的使用（
          <a href="http://cran.r-project.org/doc/manuals/R-exts.html#System-and-foreign-language-interfaces" target="_blank">
           第5节
          </a>
          ）等。
         </p>
         <p>
          一个最简单的包结构如下（括号中为相应解释）：
         </p>
         <pre class="brush: plain">pkg (包的名字，请使用一个有意义的名字，不要照抄这里的pkg三个字母)
|
|--DESCRIPTION (描述文件，包括包名、版本号、标题、描述、依赖关系等)
|--R (函数源文件)
   |--function1.R
   |--function2.R
   |--...
|--man (帮助文档)
   |--function1.Rd
   |--function2.Rd
   |--...
|--...</pre>
         <p>
          DESCRIPTION文件是一个纯文本文件（没有扩展名，Windows用户可以用记事本或其它文本编辑器打开），其内容参考R-exts就明白了，注意只有几个字段是必须的，其它都可选。如果你的包依赖于别的包中的函数，那么可以在Depends一行中写上那些包的名字（逗号分隔）。如果这个包只需要引入（Imports）别的包中的函数，那么就在Imports中写那些包的名字。Depends和Imports有细微差别：前者将导致加载你的包时，依赖包也被明确加载进来，用户可以直接使用这些包中的函数；后者不会导致那些包被明确加载，只有你的包在调用那些函数，但那些函数对用户是不可见的（除非用户明确加载之）。这里涉及到命名空间问题，后文详述。
         </p>
         <p>
          除了R和man文件夹之外，还有一些可能有用的文件夹，如demo下面可以放一些演示R代码，这样用户可以使用
          <code>
           demo()
          </code>
          函数调用这些演示，通常这是除了示例之外的最好的展示包功能的方式；data文件夹下可以放数据，这些数据通常是通过
          <code>
           save()
          </code>
          函数保存成*.rda文件放到这里；src文件夹下可以放其它语言的源代码，编译安装的时候这些代码会被编译为动态链接库文件（pkg.dll或pkg.so）；inst文件夹下的任何文件在安装包的时候都将被复制到包的根目录下，例如这里可以放NEWS文件（包更新的消息）或CHANGELOG文件，inst下通常还有一个重要的子文件夹就是doc，这里可以放一个Sweave文件（*.Rnw），编译安装包的时候这个文件会被Sweave编译生成LaTeX文件继而生成PDF文档，这也是关于一个包的很重要的介绍文档，称为Vignette。
         </p>
         <p>
          对于心急的看官，到这里可以先忽略所有介绍，直接写一个DESCRIPTION文件外加一个R文件夹，底下放一个*.R脚本文件，里面包含一个函数，然后其实就可以安装使用了。但这种粗略的办法不是长久之计，如前面所说，文档很重要，提醒自己也方便他人。
         </p>
         <h2>
          三、安装R包
         </h2>
         <p>
          装包很简单，一句
          <code>
           R CMD INSTALL pkg
          </code>
          就可以。例如你的包文件夹路径为/a/b/c/pkg/，那么先在命令行窗口中切换到这个pkg的上层目录下，然后用前面的命令安装：
         </p>
         <pre class="brush: plain">cd /a/b/c/
R CMD INSTALL pkg</pre>
         <p>
          这样就装好了，在R中可以通过
          <code>
           library(pkg)
          </code>
          加载进来使用。
         </p>
         <h2>
          四、忍者神龟
         </h2>
         <p>
          至此，似乎听起来很简单：写两个函数，扔在R文件夹下，然后
          <code>
           R CMD INSTALL
          </code>
          一下，完事。不写文档、觉得命名空间神马的最讨厌了的人现在的确可以退场了，接下来我们深入一些话题。
         </p>
         <h3>
          4.1 R文档与roxygen2
         </h3>
         <p>
          R-exts手册
          <a href="http://cran.r-project.org/doc/manuals/R-exts.html#Rd-format" target="_blank">
           第2.1节
          </a>
          给了一个简单的文档示例，我们可以看到R文档的语法和LaTeX很像，都是一些宏命令，如
          <code>
           \title{我是标题}
          </code>
          或者
          <code>
           \description{我是描述}
          </code>
          。当然，这些玩意儿你都可以手写，如果要稍微偷懒一下，也可以用
          <code>
           package.skeleton()
          </code>
          或者
          <code>
           prompt()
          </code>
          等函数来辅助生成Rd文件，这些函数都可以为你生成一些空模板，你自己往里面填充内容。若你的包只有一两个函数，倒也无妨，轻松写写完事，要是你想维护30个函数，那你就会觉得这种做法完全是坑爹。坑爹之处不仅在于你要么手敲这些命令要么绕道用函数生成文档模板自己填充，更在于你得在man文件夹下维护R文件夹下的函数的文档！你每次更新R函数，都得战战兢兢记住了：还有man文件夹下的某个*.Rd文件也许需要更新。
         </p>
         <p>
          这并不是什么新鲜问题，所有的程序开发都面临这样的问题，于是有人发明了Doxygen，大意是把文档融入到源文件中，通常采取的方式就是把文档写成一种特殊的注释，这样不会影响源文件的执行（因为注释会被忽略），同时也可以从注释中动态抽取文本生成文档（如HTML或LaTeX/PDF等），这个主意相当妙。开发程序的时候只需要在同一个文件内操作即可：举头望文档，低头思函数。
         </p>
         <p>
          <a href="http://cran.r-project.org/package=roxygen2" target="_blank">
           roxygen2
          </a>
          是一个R包（它的前任是
          <a href="http://cran.r-project.org/package=roxygen" target="_blank">
           roxygen
          </a>
          ，但已经停止更新了），它实现了把特定注释“翻译”为R文档的工作，例如：
         </p>
         <pre class="brush: r">##' @author Yihui Xie
##' @source \url{http://cos.name}</pre>
         <p>
          会被翻译为：
         </p>
         <pre class="brush: plain">\author{Yihui Xie}
\source{\url{http://cos.name}}</pre>
         <p>
          你可能会说，嗨，介有嘛啊！！注意这些注释是直接写在函数定义上方的，当然，这么说你还是不信。所以下面必须介绍另一门暗器，也就是传说中的编辑器Emacs。
         </p>
         <h3>
          4.2 roxygen与Emacs
         </h3>
         <p>
          如果你得手敲那些
          <code>
           ##'
          </code>
          注释，那我当然不会写这篇文章。曾经有两个软件我觉得我永远都学不会，一个是Emacs，另一个是Photoshop；如今只剩下一个（我也不打算学了）。Emacs是我装了卸、卸了装超过10次的软件，终于在第11次搞明白了六指琴魔是怎么个练法。如果你也是新手，那么建议安装
          <a href="http://vgoulet.act.ulaval.ca/en/emacs/" target="_blank">
           Vincent Goulet维护的修改过的Emacs
          </a>
          。修改之一就在于直接加入了
          <a href="http://ess.r-project.org/" target="_blank">
           ESS
          </a>
          （Emacs Speaks Statistics），ESS是Emacs的一个插件，它提供了编辑器与其它统计软件（如SAS、S-Plus、R）的交互，例如可以通过快捷键把R代码发送到R里执行。
         </p>
         <p>
          ESS本身我觉得也没啥，但ESS加上了roxygen的支持之后我就觉得这是个忍者工具了。在Emacs中，光标放在R函数上，快捷键C-c C-o一按，就如同发出一把暗器，一个roxygen注释模板立刻生成了。这一点让开发R包不知道快了多少倍。也许有读者知道我在维护一个叫
          <a href="http://cran.r-project.org/package=animation" target="_blank">
           animation
          </a>
          的R包，说实话，曾经有一段时间我实在不想维护了，因为写函数写文档太麻烦，直到打通了Emacs和roxygen关。
         </p>
         <p>
          好嘛！听起来好像不错，咋用？装好Emacs之后，先去找个
          <a href="http://home.uchicago.edu/~gan/file/emacs.pdf" target="_blank">
           参考卡片
          </a>
          ，练习两天一些基本操作（打开文件、保存文件之类的），熟悉一些基本概念（有些相当坑爹，例如剪切不叫剪切，叫杀，粘贴不叫粘贴，叫拉），当然首先得知道C代表Ctrl键、M代表Alt键。再找个
          <a href="http://ess.r-project.org/refcard.pdf" target="_blank">
           ESS参考卡片
          </a>
          ，看看基本的代码发送操作。总而言之，常用的快捷键不多，不需要真的变成六指琴魔。要是陷入了快捷键连锁陷阱（自己不知道按到哪里去了），就以万能的C-g退出再来。
         </p>
         <p>
          假设你已经装好了Emacs，现在可以任意打开一个R文件：C-x C-f，输入文件名，回车，如果存在则会打开它，如果不存在，则会新建一个文件，注意作为一个（伪）程序员，你必须永远牢记：不要老老实实打字！能用Tab键的时候尽量用，它在很多情况下都能自动补全（如路径、对象名称等）。这里的文件名应该以.R或.r为后缀，这样Emacs才知道应该用ESS来处理它，例如abc.R。现在在编辑器界面内输入一个任意函数，如
         </p>
         <pre class="brush: r">stupid_f = function(a, b){
    a + b
}</pre>
         <p>
          然后把光标放在
          <code>
           stupid_f
          </code>
          这一行上，按C-c C-o，你就会发现你的文件变成了类似这样一个东西（根据ESS不同的配置，以下结果也许不完全相同）：
         </p>
         <pre class="brush: r">##' title...
##'
##' description...
##'
##' details here
##' @param a
##' @param b
##' @return
##' @author Yihui Xie &lt;\url{http://yihui.name}&gt;
##' @examples
stupid_f = function(a, b){
    a + b
}</pre>
         <p>
          接下来你的任务就是把该填的文档填上。roxygen2的常规是，第一段是标题（将来翻译为
          <code>
           \title{}
          </code>
          ），段落之间以空行分开，第二段是描述（
          <code>
           \description{}
          </code>
          ），然后接着是这个函数的详细描述（
          <code>
           \details{}
          </code>
          ），它可以是若干段落，你愿意写多长就写多长。剩下的
          <code>
           @
          </code>
          字段就不必多解释了，参数、返回值、作者、示例等，我们可以通过
          <code>
           M-x customize-group
          </code>
          ，回车，
          <code>
           ess
          </code>
          ，回车，来配置ESS中这些roxygen的默认字段。一个自然而然的问题就是，哪些字段是可用的？参见roxygen2包的帮助
          <code>
           ?rd_roclet
          </code>
          <code>
          </code>
          。为了完全理解Rd文档和roxygen2字段的对应关系，你最好还是读一下手册R-exts和这两个帮助页面。注意ESS有很多方便的功能，比如你在roxygen注释之后回车，下一行会自动以
          <code>
           ##'
          </code>
          开头；在任意一个
          <code>
           @
          </code>
          标签后按M-q则可以把该段落自动折叠为短行，使得文本更整齐（这是我经常用的一个功能）；如果函数中有新增加或者减少参数，那么只需要再次C-c C-o就可以自动更新上面的注释了，新增加的参数会自动加上新的
          <code>
           @param
          </code>
          ，减少的参数会被自动删掉注释。
         </p>
         <p>
          roxygen2还实现了一些自动功能，比较重要的就是对命名空间文件NAMESPACE和描述文件DESCRIPTION的自动更新，这些我们第五节再说。先说如何从roxygen注释翻译到Rd文档，很简单：如果一个包已经按第二节的结构写好（不需要有man文件夹），函数和相应的roxygen注释都已经存在，那么用函数
          <code>
           roxygenize()
          </code>
          就可以把这样一个初级包翻译为一个完整R包了：
         </p>
         <pre class="brush: r">setwd('/a/b/c/')  # 先把工作目录切换到pkg之上
library(roxygen2)
roxygenize('pkg')</pre>
         <p>
          默认情况下新生成的R文档以及更新的NAMESPACE和DESCRIPTION都生成在包的目录下，现在pkg就是一个完整的R包，包含自动生成的man文件夹，可以直接用
          <code>
           R CMD INSTALL pkg
          </code>
          安装。
         </p>
         <p>
          <del datetime="2011-08-12T17:53:42+00:00">
           天有不测风云，事情到这里还没完全结束，roxygen包也有些坑爹的地方，它本来是2008年Google编程夏令营的产物，但作者自夏令营结束之后投入维护的精力似乎就越来越少，导致很多问题都一直没有修正。我在使用过程中实在忍不了，于是动手写了个基于roxygen之上的包Rd2roxygen
          </del>
          （更新：roxygen包现在已经被roxygen2取代了，后者在更新维护中）
         </p>
         <h3>
          4.3 后悔药包Rd2roxygen
         </h3>
         <p>
          后悔药的意思是，有人看见roxygen是如此的方便，大为后悔，因为维护原始R包太费精力了，可是爹已经被坑了，已经按照R-exts的要求老老实实写了那一大把*.Rd文件，肿么办？
          <a href="http://cran.r-project.org/package=Rd2roxygen">
           Rd2roxygen包
          </a>
          诞生的目的就是为了解决这个问题：roxygen是把注释翻译为Rd，而这个包倒过来，把Rd重新翻译回注释！给你后悔药吃。如果你是后悔的人中的一员，不妨参考这个包中的
          <code>
           Rd2roxygen()
          </code>
          函数；如果是新手，那么这个包的rab()函数可能是roxygen中的
          <code>
           roxygenize()
          </code>
          函数的一个很好的替代，其中我比较自豪的一个功能是它能自动整理示例代码，很多R包的示例代码都不够整齐（无空格无缩进等）。详情参见帮助文件及其介绍文档（Vignette）。简言之，现在我们使用：
         </p>
         <pre class="brush: r">library(Rd2roxygen)
rab('pkg')
## 如果要直接安装，那么rab('pkg', install=TRUE)</pre>
         <p>
          所有工具至此大概介绍完毕。如果你还没昏死过去，请接着读第五节。
         </p>
         <h2>
          五、九霄云外
         </h2>
         <p>
          上面的东西刚上手时可能是有点晕，熟悉之后写包就立刻风驰电掣了。下面我们再介绍几个略微高级的概念。
         </p>
         <h3>
          5.1 命名空间
         </h3>
         <p>
          命名空间（NAMESPACE）是R包管理包内对象的一个途径，它可以控制哪些R对象是对用户可见的，哪些对象是从别的包导入（import），哪些对象从本包导出（export）。为什么要有这么个玩意儿存在？主要是为了更好管理你的一堆对象。写R包时，有时候可能会遇到某些函数只是为了另外的函数的代码更短而从中抽象、独立出来的，这些小函数仅仅供你自己使用，对用户没什么帮助，他们不需要看见这些函数，这样你就可以在包的根目录下创建一个NAMESPACE文件，里面写上
          <code>
           export(函数名)
          </code>
          来导出那些需要对用户可见的函数。自R 2.14.0开始，命名空间是R包的强制组成部分，所有的包必须有命名空间，如果没有的话，R会自动创建。
         </p>
         <p>
          前面我们也提到DESCRIPTION文件中有Imports一栏，这里设置的包通常是你只需要其部分功能的包，例如我只想在我的包中使用foo包中的
          <code>
           bar()
          </code>
          函数，那么Imports中就需要填foo，而NAMESPACE中则需要写
          <code>
           importFrom(foo, bar)
          </code>
          ，在自己的包的源代码中则可以直接调用
          <code>
           bar()
          </code>
          函数，R会从NAMESPACE看出这个
          <code>
           bar()
          </code>
          对象是从哪里来的。
         </p>
         <p>
          roxygen注释对这一类命名空间有一系列标签，如一个函数的文档中若标记了
          <code>
           ##' @export
          </code>
          ，那么这个函数将来就会出现在命名空间文件中（被导出），若写了
          <code>
           ##' @importFrom foo bar
          </code>
          ，那么foo包的
          <code>
           bar
          </code>
          对象也会被写在命名空间中。这些内容参见R-exts的
          <a href="http://cran.r-project.org/doc/manuals/R-exts.html#Package-name-spaces" target="_blank">
           1.6节
          </a>
          和roxygen2的
          <code>
           ?export
          </code>
          帮助。
         </p>
         <h3>
          5.2 介绍文档（Vignette）
         </h3>
         <p>
          前面我们提到了inst/doc/目录，下面可以放一个Sweave文件，在
          <code>
           R CMD INSTALL
          </code>
          过程中这个Sweave文件会被执行并生成PDF文档，若Sweave文件中有一句注释：
         </p>
         <pre class="brush: plain">%\VignetteIndexEntry{An Introduction to XXX}</pre>
         <p>
          那么这句话将来会出现在HTML帮助页面中（点开链接“Overview of user guides and package vignettes”），例如Rd2roxygen包或者formatR包的帮助页面中就有介绍文档的链接。
         </p>
         <h3>
          5.3 其它语言
         </h3>
         <p>
          在src目录下我们可以放置一些其它语言的源代码，里面可能包含一些函数，这些函数在被编译之后，（以C语言为例）可以在R代码中以
          <code>
           .C('routine_name', ..., package = 'pkg')
          </code>
          的形式调用，但要注意，如果需要用这个功能，在R目录下需要有一个zzz.R文件（这个特殊文件是用来在加载包之前加载运行的代码），里面写上：
         </p>
         <pre class="brush: r">.onLoad &lt;- function(lib, pkg) {
    library.dynam("pkg_name", pkg, lib)  # pkg_name是你的包的名字
}</pre>
         <p>
          这些东西我并不在行，只介绍到这里，详细内容还请深挖R-exts。另注意
          <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2604">
           楼下Rtist的评论
          </a>
          。
         </p>
         <h2>
          六、发布
         </h2>
         <p>
          等你的包写好之后，还不能立刻发布，因为还有很重要的一步要做，就是看它是否能通过
          <code>
           R CMD check
          </code>
          的检查，这是你的包能发布到CRAN上的前提。在命令行界面中输入（请确保pkg文件夹是一个完整的R包，即：如果你用roxygen2，那么这里要检查的是运行过roxygen2之后的产物）：
         </p>
         <pre class="brush: plain">R CMD check pkg</pre>
         <p>
          R就会开始检查这个包是否有语法错误以及是否符合规范。或者如果你用Rd2roxygen包的话，也可以在R里面调用：
         </p>
         <pre class="brush: r">library(Rd2roxgyen)
rab('pkg', check = TRUE)  # 确保pkg文件夹在当前工作目录下：getwd()</pre>
         <p>
          检查过程会告诉你详细的日志信息，如果有错，你立刻就能知道。这里每个函数的例子（如果有的话）都会被运行，如果例子代码有错，这里也会报错，所以这个过程也是一个很好的检查自己的示例代码能否正确运行的测试。如果没有任何错误，那么就可以向CRAN提交了。提交的内容是一个压缩包，名为pkg_x.x-x.tar.gz，它是通过
          <code>
           R CMD build pkg
          </code>
          生成的。提交方式是通过FTP，参见
          <a href="http://cran.r-project.org" target="_blank">
           CRAN首页说明
          </a>
          。注意上传完之后需要向CRAN管理员发一封邮件，通知他们你提交了一个包，以后每次更新时的流程也一样：FTP上传+邮件通知。目前Kurt Hornik管理Linux包的编译，Uwe Ligges负责Windows包的编译，都是人工管理，要是碰上Kurt度假去了，你就得等着了（概率很小，不过我碰到过）。
         </p>
         <h2>
          七、后话
         </h2>
         <p>
          现在CRAN上的附加包数目已经超过三千，充分体现出R的良好扩展性和社区合作，要不然不会有这么多人去写R包（尽管这三千号包肯定是良莠不齐）。我个人是07年底从动画包animation开始写起的（想当年，R包里面还有微软的CHM帮助）……过了几年又陆续写了自动整理R代码的formatR包、把Rd转化为roxygen注释的Rd2roxygen包、把R图形转化为Flash动画的R2SWF包（与邱怡轩合作）、纯粹为了搞笑好玩的fun包（未发布）、为我的《现代统计图形》书稿配备的MSG包、用图形界面调用WinBUGS或者OpenBUGS的iBUGS包等。用麦兜的歌唱就是：
         </p>
         <blockquote>
          <p>
           大包再来两笼
           <br/>
           大包再来两笼
           <br/>
           大包再来两笼不怕撑
           <br/>
           ……
          </p>
         </blockquote>
         <p>
          扯远了。
         </p>
         <p>
          写了这么些包，有些感受。首先，写代码有两样一般人不能理解的困难，一样前面已说，就是写文档，你得解释清楚参数的含义、得给出有用的示例代码、写演示写介绍文档等等，工作量其实很大；另外一样就是对象命名，我认为从对象的命名可以看出一个程序员的成熟程度，好的程序员，给的函数名既精炼又直观，这一点上必须佩服R core团队，要是我写几千个函数，光是想名字都能把脑袋想爆了，这里顺便提一下我推荐的命名方式，要么用驼峰（
          <code>
           someFunction
          </code>
          ），要么用下划线（
          <code>
           some_function
          </code>
          ），尽量不要用点（
          <code>
           some.function
          </code>
          ），因为点在R语言中有一层特殊含义（S3方法的类匹配），这也是我对animation包比较后悔的一点。其次，你最好学会一样版本控制工具，如SVN或者GIT，不仅是管理包，它在管理任何文本文件时都非常有用，也利于多人合作，我现在倾向于GIT，主要是因为一个好网站的存在（GitHub），我的所有R包都已经从原来以SVN为基础的R-Forge上
          <a href="https://github.com/yihui" target="_blank">
           搬家到了GitHub
          </a>
          ，可以在那里参考我的包是怎么写的；不会版本控制工具的人的一个典型特征就是，电脑里存在一系列这样的文件：领导汇报20100101.doc、领导汇报20100102.doc……，版本控制工具可以让你很方便回到文件的历史状态，也方便多人合作（例如将A的更新和B的更新自动合并）。最后，写包不仅是对自己工作的一个不断总结，不至于做完一件事就永远尘封之，而且也是很好的自我宣传途径，你在简历上写得天花乱坠，可能不如以一件作品更能深入人心。
         </p>
         <p>
          又及，写完一个包之后，你可能就不会再对别人的包问：这是哪个狗日的写的文档？
         </p>
         <p>
          又又及，也许你就或多或少能理解自由软件为嘛还没死掉。
         </p>
         <div class="wumii-hook">
          <br/>
          <br/>
         </div>
        </div>
        <!-- .entry-content -->
        <footer class="entry-meta">
         <div class="author-info">
          <div class="author-avatar">
           <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
          </div>
          <!-- .author-avatar -->
          <div class="author-description">
           <h2 class="author-title">
            关于谢益辉
           </h2>
           <p class="author-bio">
            RStudio码了个工，Iowa State University统计系博了个士。统计之都网站创办者；研究兴趣为统计图形及数据可视化，对统计模型方法的发展感兴趣但不喜欢纯粹抽象的数学理论，以直观、实用为学习标准；偏好以R语言为工具；Email：xie@yihui.name；个人主页：
            <a href="http://yihui.name">
             http://yihui.name
            </a>
            <a class="author-link" href="http://cos.name/author/yihui/" rel="author">
             查看所有由谢益辉发表的文章
             <span class="meta-nav">
              →
             </span>
            </a>
           </p>
          </div>
          <!-- .author-description -->
         </div>
         <!-- .author-info -->
        </footer>
        <!-- .entry-meta -->
       </article>
       <!-- #post -->
       <nav class="navigation post-navigation" role="navigation">
        <h1 class="screen-reader-text">
         文章导航
        </h1>
        <div class="nav-links">
         <a href="http://cos.name/2011/05/summary-of-the-1st-data-mining-competetion/" rel="prev">
          <span class="meta-nav">
           ←
          </span>
          首届全国大学生数据挖掘邀请赛圆满结束
         </a>
         <a href="http://cos.name/2011/05/4th-china-r-beijing-summary/" rel="next">
          第四届中国R语言会议（北京会场）纪要
          <span class="meta-nav">
           →
          </span>
         </a>
        </div>
        <!-- .nav-links -->
       </nav>
       <!-- .navigation -->
       <div class="comments-area" id="comments">
        <h2 class="comments-title">
         《
         <span>
          开发R程序包之忍者篇
         </span>
         》有45个想法
        </h2>
        <ol class="comment-list">
         <li class="comment even thread-even depth-1 parent" id="comment-2170">
          <article class="comment-body" id="div-comment-2170">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/81ef8a48a2cde60cadfa924cbdf454ae?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              Andrewchay
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2170">
              <time datetime="2011-05-29T13:35:05+00:00">
               2011/05/29 13:35
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             我能转载您的这个到我的个人博客留个底么？谢谢
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给Andrewchay" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2170#respond" onclick='return addComment.moveForm( "div-comment-2170", "2170", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment byuser comment-author-yihui bypostauthor odd alt depth-2" id="comment-2172">
            <article class="comment-body" id="div-comment-2172">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://yihui.name" rel="external nofollow">
                 谢益辉
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2172">
                <time datetime="2011-05-29T13:42:29+00:00">
                 2011/05/29 13:42
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               我得谢谢你问我一句。自觉的同志还真不多，很多人都是悄磨叽儿就给复制走了……
              </p>
              <p>
               答复是可以，但请在醒目的位置标明原始链接，我不是忌讳转载，我是怕文章更新，另外我也有点担心别人的排版。
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给谢益辉" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2172#respond" onclick='return addComment.moveForm( "div-comment-2172", "2172", "respond", "2766" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-odd thread-alt depth-1" id="comment-2171">
          <article class="comment-body" id="div-comment-2171">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/62b5e49d0d3058fc1e5c784dd8e51727?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              jah_et
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2171">
              <time datetime="2011-05-29T13:40:14+00:00">
               2011/05/29 13:40
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             哈哈，这个文风很好~
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给jah_et" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2171#respond" onclick='return addComment.moveForm( "div-comment-2171", "2171", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-even depth-1 parent" id="comment-2174">
          <article class="comment-body" id="div-comment-2174">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/b4ade9b6c738c92dddcd4df09e39b03b?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://saslist.com" rel="external nofollow">
               sxlion
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2174">
              <time datetime="2011-05-29T23:04:59+00:00">
               2011/05/29 23:04
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             用SAS做东西，做不出来就可以骂SAS公司嘛，哈哈。然而用R呢，找不到合适的，得忍着自己写一个包或函数，所谓忍者，真够形象。
            </p>
            <p>
             不容易啊，我承认我做不来。
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给sxlion" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2174#respond" onclick='return addComment.moveForm( "div-comment-2174", "2174", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment byuser comment-author-taiyun even depth-2" id="comment-2207">
            <article class="comment-body" id="div-comment-2207">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/beb15ba775be6241a4e5fc9e476e36c0?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://taiyun.cos.name/" rel="external nofollow">
                 魏太云
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2207">
                <time datetime="2011-06-01T18:26:32+00:00">
                 2011/06/01 18:26
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               你骂了SAS公司之后人家也不一定会搭理你。SASor们找不到合适的方法不也得自己开发一个，但不知难度大不大。
              </p>
              <p>
               软件、语言之类的都比较好学，学习成本并不是很大。但部分资深用户很可能对自己的软件\语言阶级非常忠诚，并努力维护自己以及所在阶级的利益，因此才出现了阶级的对立与矛盾。士为知己者死，女为悦己者容，我觉得这算是很好的一件事情。
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给魏太云" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2207#respond" onclick='return addComment.moveForm( "div-comment-2207", "2207", "respond", "2766" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-odd thread-alt depth-1 parent" id="comment-2175">
          <article class="comment-body" id="div-comment-2175">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/8bce8a6da031c2577ea480057979cb05?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              ruikoeln
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2175">
              <time datetime="2011-05-30T10:06:55+00:00">
               2011/05/30 10:06
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             好文！！窃以为只有写过包的人才能称为中级或高级程序员。
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给ruikoeln" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2175#respond" onclick='return addComment.moveForm( "div-comment-2175", "2175", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment byuser comment-author-yihui bypostauthor even depth-2" id="comment-2177">
            <article class="comment-body" id="div-comment-2177">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://yihui.name" rel="external nofollow">
                 谢益辉
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2177">
                <time datetime="2011-05-30T11:17:37+00:00">
                 2011/05/30 11:17
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               写包只是程序开发的一方面啦，很多人不写包但做的事情很牛。要说中高级R程序员，窃以为还是得看John Chambers老爷子的原著（如Software for Data Analysis），S语言和R语言的设计之精巧，似乎并没有引起人们的注意。比如这里介绍的命名空间（主要是Luke Tierney的工作），可能绝大部分用户永远都不会接触到，但的确是一个很好的管理对象的方式；还有S3与S4以及最新的ReferenceClass（参见?setRefClass），这些概念都很有意思，很能体现设计者的智慧。这些东西才能体现R作为一门”语言“的特征，对多数人来说，R只是一门”程序“，是用来完成数据处理任务的，当然，这也无妨，R就像一盘大餐，爱吃哪部分就挑哪部分。
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给谢益辉" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2177#respond" onclick='return addComment.moveForm( "div-comment-2177", "2177", "respond", "2766" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-even depth-1 parent" id="comment-2179">
          <article class="comment-body" id="div-comment-2179">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/22437e58a5b87d807219d5abbb3b0c3d?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              daodao
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2179">
              <time datetime="2011-05-30T14:13:47+00:00">
               2011/05/30 14:13
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             各位好，请问R里面有撤销前一步操作的命令吗？
             <br/>
             比如我画了一个图，然后添加了几个文字，但发现放错位置了，要想改就只能再画一次图。
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给daodao" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2179#respond" onclick='return addComment.moveForm( "div-comment-2179", "2179", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment byuser comment-author-yihui bypostauthor even depth-2" id="comment-2181">
            <article class="comment-body" id="div-comment-2181">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://yihui.name" rel="external nofollow">
                 谢益辉
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2181">
                <time datetime="2011-05-30T14:29:31+00:00">
                 2011/05/30 14:29
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               请到正确的地方提问，本文和你的问题毫无关系。
              </p>
              <p>
               参见：
               <a href="http://cos.name/cn/topic/104253" rel="nofollow">
                http://cos.name/cn/topic/104253
               </a>
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给谢益辉" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2181#respond" onclick='return addComment.moveForm( "div-comment-2181", "2181", "respond", "2766" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-odd thread-alt depth-1 parent" id="comment-2180">
          <article class="comment-body" id="div-comment-2180">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/22437e58a5b87d807219d5abbb3b0c3d?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              daodao
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2180">
              <time datetime="2011-05-30T14:16:40+00:00">
               2011/05/30 14:16
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             麻烦各位给推荐个可以交流R操作的QQ群，谢谢啦
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给daodao" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2180#respond" onclick='return addComment.moveForm( "div-comment-2180", "2180", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment byuser comment-author-yihui bypostauthor even depth-2" id="comment-2182">
            <article class="comment-body" id="div-comment-2182">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://yihui.name" rel="external nofollow">
                 谢益辉
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2182">
                <time datetime="2011-05-30T14:33:53+00:00">
                 2011/05/30 14:33
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               个人解释参见：
               <br/>
               <a href="http://cos.name/2009/02/create-r-packages-under-windows/#comment-1162" rel="nofollow">
                http://cos.name/2009/02/create-r-packages-under-windows/#comment-1162
               </a>
              </p>
              <p>
               推荐你到论坛提问：
               <br/>
               <a href="http://cos.name/cn/" rel="nofollow">
                http://cos.name/cn/
               </a>
              </p>
              <p>
               问问题不要仅仅为了自己方便，要考虑别人，在论坛问的问题，将来可以被人再次搜索到，对有问题的人和回答问题的人来说都是好事；在QQ群里问的问题，这辈子也就只有那几十个成员知道。
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给谢益辉" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2182#respond" onclick='return addComment.moveForm( "div-comment-2182", "2182", "respond", "2766" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-even depth-1" id="comment-2202">
          <article class="comment-body" id="div-comment-2202">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/5b8cd887d46c3894e895fbea7a46a3bf?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://dreamhunter.me/cn" rel="external nofollow">
               Weicheng
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2202">
              <time datetime="2011-06-01T15:06:48+00:00">
               2011/06/01 15:06
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             强顶技术贴，太给力了，拜读中:)
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给Weicheng" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2202#respond" onclick='return addComment.moveForm( "div-comment-2202", "2202", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-odd thread-alt depth-1 parent" id="comment-2507">
          <article class="comment-body" id="div-comment-2507">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/a05aa2ef750cc88cfc24ada0ebc850bd?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              anf
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2507">
              <time datetime="2011-10-11T11:18:52+00:00">
               2011/10/11 11:18
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             在上传到ftp时出现中断，再次上传时总提示无法创建文件。博主是否遇到过此上传失败的问题？这是国内网络不好，还是CRAN那边网络不好？上传失败也无ftp的删除权限，应如何处理上传失败的文件？
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给anf" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2507#respond" onclick='return addComment.moveForm( "div-comment-2507", "2507", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment byuser comment-author-yihui bypostauthor odd alt depth-2" id="comment-2508">
            <article class="comment-body" id="div-comment-2508">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://yihui.name" rel="external nofollow">
                 谢益辉
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2508">
                <time datetime="2011-10-11T12:13:24+00:00">
                 2011/10/11 12:13
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               办法一：给CRAN写邮件请求删除；办法二：把包的版本略升，重新R CMD build之后再上传，写邮件时说明哪个是你要保留的；办法三：通过R-Forge直接提交。我以前在国内的确遇到过这种情况，怀疑是国内网络问题。
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给谢益辉" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2508#respond" onclick='return addComment.moveForm( "div-comment-2508", "2508", "respond", "2766" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-even depth-1 parent" id="comment-2519">
          <article class="comment-body" id="div-comment-2519">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/a16dcd1a26d18e0303429c8c4a5d9e7a?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              大學內民明丸
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2519">
              <time datetime="2011-10-25T01:16:23+00:00">
               2011/10/25 01:16
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             你覺得 Emacs 的 default keybinding 不好用的話, 可以考慮一下 Ergoemacs:
             <a href="http://ergoemacs.org/" rel="nofollow">
              http://ergoemacs.org/
             </a>
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给大學內民明丸" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2519#respond" onclick='return addComment.moveForm( "div-comment-2519", "2519", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment byuser comment-author-yihui bypostauthor odd alt depth-2" id="comment-2520">
            <article class="comment-body" id="div-comment-2520">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://yihui.name" rel="external nofollow">
                 谢益辉
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2520">
                <time datetime="2011-10-25T01:25:16+00:00">
                 2011/10/25 01:25
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               谢谢，已经用习惯啦。
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给谢益辉" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2520#respond" onclick='return addComment.moveForm( "div-comment-2520", "2520", "respond", "2766" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-odd thread-alt depth-1 parent" id="comment-2604">
          <article class="comment-body" id="div-comment-2604">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/caddfd26fb7479744400f3f9b9e632f3?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              Rtist
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2604">
              <time datetime="2011-11-25T11:04:42+00:00">
               2011/11/25 11:04
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             Nice job, as always! A small exception is that putting library.dynam() into .onLoad() seems of little use now due to the requirement of using namespaces in all packages since 2.14. In most cases, it can be declared in the NAMESPACE file (unless in some complex situations).
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给Rtist" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2604#respond" onclick='return addComment.moveForm( "div-comment-2604", "2604", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment byuser comment-author-yihui bypostauthor odd alt depth-2" id="comment-2608">
            <article class="comment-body" id="div-comment-2608">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://yihui.name" rel="external nofollow">
                 谢益辉
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2608">
                <time datetime="2011-11-29T14:32:54+00:00">
                 2011/11/29 14:32
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               谢谢。这一块我不熟，我看别人经常用library.dynam或者在命名空间中用useDynlib，我不太清楚哪些情况下需要用这两个函数。R 2.14开始强制使用命名空间，所以文中提到的.First.lib的确没用了，我已经删掉。
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给谢益辉" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2608#respond" onclick='return addComment.moveForm( "div-comment-2608", "2608", "respond", "2766" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-even depth-1 parent" id="comment-2631">
          <article class="comment-body" id="div-comment-2631">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/ae822f979980ea450842c7cc36baeb94?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://www.sasanalysis.com" rel="external nofollow">
               dapangmao
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2631">
              <time datetime="2011-12-13T06:24:39+00:00">
               2011/12/13 06:24
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             谢兄排在第５０位，恭喜！截止2011－12－12
             <br/>
             author package
             <br/>
             1 Kurt Hornik 23
             <br/>
             2 Martin Maechler 23
             <br/>
             3 Hadley Wickham 21
             <br/>
             4 Rmetrics Core Team 19
             <br/>
             5 Achim Zeileis 17
             <br/>
             6 Henrik Bengtsson 17
             <br/>
             7 Paul Gilbert 17
             <br/>
             8 Brian Ripley 14
             <br/>
             9 Roger D. Peng 13
             <br/>
             10 Torsten Hothorn 13
             <br/>
             11 Karline Soetaert 12
             <br/>
             12 Philippe Grosjean 12
             <br/>
             13 Robin K. S. Hankin 12
             <br/>
             14 Charles J. Geyer 11
             <br/>
             15 Matthias Kohl 11
             <br/>
             16 Charlotte Maia 10
             <br/>
             17 Mikis Stasinopoulos 10
             <br/>
             18 Simon Urbanek 10
             <br/>
             19 Thomas Lumley 10
             <br/>
             20 Arne Henningsen 9
             <br/>
             21 Gregory R. Warnes 9
             <br/>
             22 Jonathan M. Lees 9
             <br/>
             23 Michael Hahsler 9
             <br/>
             24 Peter Ruckdeschel 9
             <br/>
             25 A.I. McLeod 8
             <br/>
             26 Brian Lee Yung Rowe 8
             <br/>
             27 Dirk Eddelbuettel 8
             <br/>
             28 John Fox 8
             <br/>
             29 Kaspar Rufibach 8
             <br/>
             30 Korbinian Strimmer 8
             <br/>
             31 Michael Friendly 8
             <br/>
             32 Peter Solymos 8
             <br/>
             33 Roger Bivand 8
             <br/>
             34 Simon Urbanek 8
             <br/>
             35 Christopher Brown 7
             <br/>
             36 David Meyer 7
             <br/>
             37 ORPHANED 7
             <br/>
             38 Revolution Analytics 7
             <br/>
             39 Rob J Hyndman 7
             <br/>
             40 Romain Francois 7
             <br/>
             41 Ulrike Groemping 7
             <br/>
             42 Christophe Genolini 6
             <br/>
             43 Frank Schaarschmidt 6
             <br/>
             44 G. Grothendieck 6
             <br/>
             45 Hana Sevcikova 6
             <br/>
             46 Jeffrey A. Ryan 6
             <br/>
             47 Kjetil Halvorsen 6
             <br/>
             48 Pei Wang 6
             <br/>
             49 Trevor Hastie 6
             <br/>
             50 Yihui Xie 6
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给dapangmao" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2631#respond" onclick='return addComment.moveForm( "div-comment-2631", "2631", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment byuser comment-author-yihui bypostauthor odd alt depth-2 parent" id="comment-2632">
            <article class="comment-body" id="div-comment-2632">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://yihui.name" rel="external nofollow">
                 谢益辉
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2632">
                <time datetime="2011-12-13T06:41:26+00:00">
                 2011/12/13 06:41
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               嗯，谢谢，很高兴和Trevor Hastie做邻居。看来我得改名了，叫Yihui Xie在排名上有天然的劣势，两个字母都不讨好，只有Z才会排在我后面，哈哈。
              </p>
              <p>
               我还有两个包没发，一个估计一周内发出来（knitr），另一个可能再等一两个月再发（tweakr），到时候和Simon做邻居去。
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给谢益辉" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2632#respond" onclick='return addComment.moveForm( "div-comment-2632", "2632", "respond", "2766" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
            <ol class="children">
             <li class="comment even depth-3" id="comment-2633">
              <article class="comment-body" id="div-comment-2633">
               <footer class="comment-meta">
                <div class="comment-author vcard">
                 <img src="http://sdn.geekzu.org/avatar/ae822f979980ea450842c7cc36baeb94?s=74&amp;d=monsterid&amp;r=g"/>
                 <b class="fn">
                  <a class="url" href="http://www.sasanalysis.com" rel="external nofollow">
                   dapangmao
                  </a>
                 </b>
                 <span class="says">
                  说道：
                 </span>
                </div>
                <!-- .comment-author -->
                <div class="comment-metadata">
                 <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2633">
                  <time datetime="2011-12-13T06:50:58+00:00">
                   2011/12/13 06:50
                  </time>
                 </a>
                </div>
                <!-- .comment-metadata -->
               </footer>
               <!-- .comment-meta -->
               <div class="comment-content">
                <p>
                 你真高产，崇拜一个，不愧是未来的Hadley Wickham
                </p>
               </div>
               <!-- .comment-content -->
              </article>
              <!-- .comment-body -->
             </li>
             <!-- #comment-## -->
             <li class="comment byuser comment-author-yihui bypostauthor odd alt depth-3" id="comment-2634">
              <article class="comment-body" id="div-comment-2634">
               <footer class="comment-meta">
                <div class="comment-author vcard">
                 <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
                 <b class="fn">
                  <a class="url" href="http://yihui.name" rel="external nofollow">
                   谢益辉
                  </a>
                 </b>
                 <span class="says">
                  说道：
                 </span>
                </div>
                <!-- .comment-author -->
                <div class="comment-metadata">
                 <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2634">
                  <time datetime="2011-12-13T07:06:07+00:00">
                   2011/12/13 07:06
                  </time>
                 </a>
                </div>
                <!-- .comment-metadata -->
               </footer>
               <!-- .comment-meta -->
               <div class="comment-content">
                <p>
                 只要流程对路，建一个包本身几乎不用花什么力气，所以数量并不能太说明问题。比如我上面说的iBUGS包基本上被我抛弃了，已经N久没看了，估计已经成了CRAN上垃圾包之一。
                </p>
                <p>
                 我是赶不上Hadley了，他有很好的计算机编程背景，而且熟悉很多现代语言，就我这种八年前以Visual Basic入门现在除了R什么都不会的人走不远呐。只能说跟在群牛们后面尽量学习了。
                </p>
               </div>
               <!-- .comment-content -->
              </article>
              <!-- .comment-body -->
             </li>
             <!-- #comment-## -->
            </ol>
            <!-- .children -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-odd thread-alt depth-1" id="comment-2764">
          <article class="comment-body" id="div-comment-2764">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/1778dba6726e274b9b6d7bef3d6a6660?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              Lyxia
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2764">
              <time datetime="2012-03-06T05:13:05+00:00">
               2012/03/06 05:13
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             去年做了第一个R包，看了你的blog收益良多～ 现在开始做第二个，based on Fortran。。。就傻X了。到现在为止也只会从R里call Fortran subroutine，但是在CMD里面check R包总出错。唉唉，编程完全半路出家，找资料都不知道哪里去找。。。
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给Lyxia" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2764#respond" onclick='return addComment.moveForm( "div-comment-2764", "2764", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-even depth-1" id="comment-2958">
          <article class="comment-body" id="div-comment-2958">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/2cb3847555acfc7665f3e25858ab743b?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              raphael210
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-2958">
              <time datetime="2012-04-16T16:15:15+00:00">
               2012/04/16 16:15
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             请问：
             <br/>
             要想使用roxygen2，则你的函数中不能出现任何中文（包括注释）？
             <br/>
             否则roxygenize通不过？？
            </p>
            <p>
             比如下面的情况：
             <br/>
             ##’ title…
             <br/>
             ##’
             <br/>
             ##’ description…
             <br/>
             ##’
             <br/>
             ##’ details here
             <br/>
             ##’ @param a
             <br/>
             ##’ @param b
             <br/>
             ##’ @return
             <br/>
             ##’ @author Yihui Xie
             <br/>
             ##’ @examples
             <br/>
             stupid_f = function(a, b){
             <br/>
             # 加入一句中文
             <br/>
             a + b
             <br/>
             }
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给raphael210" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=2958#respond" onclick='return addComment.moveForm( "div-comment-2958", "2958", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-odd thread-alt depth-1 parent" id="comment-3200">
          <article class="comment-body" id="div-comment-3200">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/9e16921e64facef58c470411d054105e?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              Guoxiang
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-3200">
              <time datetime="2012-07-16T10:51:21+00:00">
               2012/07/16 10:51
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             谢兄你好，
             <br/>
             我之前用了一个R统计包，是基于R 2.7.0的，可以装在R 2.10 之前的版本中，如R 2.9.2。现在我想用新版本的R, 如2.13 （或更高），问题是该包不能在这些新版本中用，而且那个统计包已经彻底停止更新了。我现在手里只有那个包的zip文件。当初我装的时候就是通过install package from local zip file选项进行安装的。
             <br/>
             想问一下有没有比较方便的方法可以更新这个zip包，使之能在新的R版本中用 ？我不要求发布，只要它能在新的R版本中能用就行了。我在网上找了很久，找不到相关的材料，就来到了你这里。非常感谢！
            </p>
            <p>
             Guoxiang
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给Guoxiang" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=3200#respond" onclick='return addComment.moveForm( "div-comment-3200", "3200", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment byuser comment-author-yihui bypostauthor odd alt depth-2 parent" id="comment-3201">
            <article class="comment-body" id="div-comment-3201">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://yihui.name" rel="external nofollow">
                 谢益辉
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-3201">
                <time datetime="2012-07-16T10:58:31+00:00">
                 2012/07/16 10:58
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               重点看本文的第一节和第六节。你需要找到那个包的源代码，然后自己R CMD build/install编译安装。
              </p>
              <p>
               那是什么神奇的包，都被淘汰若干年了还有这么执着的用户？
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给谢益辉" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=3201#respond" onclick='return addComment.moveForm( "div-comment-3201", "3201", "respond", "2766" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
            <ol class="children">
             <li class="comment even depth-3" id="comment-3202">
              <article class="comment-body" id="div-comment-3202">
               <footer class="comment-meta">
                <div class="comment-author vcard">
                 <img src="http://sdn.geekzu.org/avatar/9e16921e64facef58c470411d054105e?s=74&amp;d=monsterid&amp;r=g"/>
                 <b class="fn">
                  Guoxiang
                 </b>
                 <span class="says">
                  说道：
                 </span>
                </div>
                <!-- .comment-author -->
                <div class="comment-metadata">
                 <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-3202">
                  <time datetime="2012-07-16T11:26:51+00:00">
                   2012/07/16 11:26
                  </time>
                 </a>
                </div>
                <!-- .comment-metadata -->
               </footer>
               <!-- .comment-meta -->
               <div class="comment-content">
                <p>
                 Thanks for your fast reply!
                 <br/>
                 主要是我一年多前的文章，现在想抽些时间把文章按review的意见改改，再不改就会彻底把它忘了。我之前的代码都是针对那个包的，所以也就不想再花其他时间搜其他可行的包。我现在的工作方向跟这文章关系不大，所以当前的任务就是尽快把那文章的分析结束掉。
                 <br/>
                 我也考虑过可行的办法，像你说的，就是把这个包里所有的函数代码都一个个提出来，然后build。一来不是专门搞统计的对这个过程不熟，二来这个包还依赖着其他三个包，我不知道就这么build会不会有问题。所以就想着或许有更简单的方法来把它转一下。
                 <br/>
                 这个包名叫farima: Fractional Auto-Regressive Integrated Moving Average
                 <br/>
                 也有类似的包如longmemo，当然有些函数不大一样，还得花时间琢磨琢磨。。。
                 <br/>
                 谢兄要是有兴趣，我可以发给你:)
                </p>
               </div>
               <!-- .comment-content -->
              </article>
              <!-- .comment-body -->
             </li>
             <!-- #comment-## -->
             <li class="comment byuser comment-author-yihui bypostauthor odd alt depth-3" id="comment-3203">
              <article class="comment-body" id="div-comment-3203">
               <footer class="comment-meta">
                <div class="comment-author vcard">
                 <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
                 <b class="fn">
                  <a class="url" href="http://yihui.name" rel="external nofollow">
                   谢益辉
                  </a>
                 </b>
                 <span class="says">
                  说道：
                 </span>
                </div>
                <!-- .comment-author -->
                <div class="comment-metadata">
                 <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-3203">
                  <time datetime="2012-07-16T11:35:26+00:00">
                   2012/07/16 11:35
                  </time>
                 </a>
                </div>
                <!-- .comment-metadata -->
               </footer>
               <!-- .comment-meta -->
               <div class="comment-content">
                <p>
                 呃，我对这个没什么兴趣。只能祝你R CMD build好运了。既然它被CRAN移除了，那么一定是因为它在编译或检查过程中有错误，估计你得折腾一阵子了。
                </p>
               </div>
               <!-- .comment-content -->
              </article>
              <!-- .comment-body -->
             </li>
             <!-- #comment-## -->
            </ol>
            <!-- .children -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-even depth-1" id="comment-3204">
          <article class="comment-body" id="div-comment-3204">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/9e16921e64facef58c470411d054105e?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              Guoxiang
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-3204">
              <time datetime="2012-07-16T12:14:23+00:00">
               2012/07/16 12:14
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             据我了解，那个包从来没放在CRAN上，那人的毕业论文就做这，我是从他的个人网页下载那个zip包的。当时我问过他，他说放在CRAN上太麻烦。看来以后包还是得用从正规站下载的，要不然很容易死翘翘~~~
             <br/>
             谢谢指导！
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给Guoxiang" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=3204#respond" onclick='return addComment.moveForm( "div-comment-3204", "3204", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="pingback odd alt thread-odd thread-alt depth-1" id="comment-3579">
          <div class="comment-body">
           Pingback：
           <a class="url" href="http://zhenglei.wordpress.com/2013/01/11/git-starting-point/" rel="external nofollow">
            Git Starting Point « Zhenglei
           </a>
          </div>
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-even depth-1 parent" id="comment-4346">
          <article class="comment-body" id="div-comment-4346">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/019bdbbbcbda5aa86dc5aed2a7bee9b5?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              朱晓瑞
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-4346">
              <time datetime="2013-06-07T01:47:08+00:00">
               2013/06/07 01:47
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             我在安装完GNU Emacs 24.3.1 (i386-mingw-nt6.1.7601)之后按照您说的写完一个函数之后按C-c C-o没有反应啊，按照您说的对ESS进行设置但是进去之后就晕了，也看了看rd_roclet了，还是没找到头绪，希望赐教
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给朱晓瑞" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=4346#respond" onclick='return addComment.moveForm( "div-comment-4346", "4346", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment odd alt depth-2 parent" id="comment-4347">
            <article class="comment-body" id="div-comment-4347">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/019bdbbbcbda5aa86dc5aed2a7bee9b5?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                朱晓瑞
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-4347">
                <time datetime="2013-06-07T02:02:38+00:00">
                 2013/06/07 02:02
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               找到了，是C-c C-o C-o，还有好多，鼓捣鼓捣吧，您这抛砖引玉文章很好，写包工程可以开始了
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给朱晓瑞" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=4347#respond" onclick='return addComment.moveForm( "div-comment-4347", "4347", "respond", "2766" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
            <ol class="children">
             <li class="comment byuser comment-author-yihui bypostauthor even depth-3" id="comment-4363">
              <article class="comment-body" id="div-comment-4363">
               <footer class="comment-meta">
                <div class="comment-author vcard">
                 <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
                 <b class="fn">
                  <a class="url" href="http://yihui.name" rel="external nofollow">
                   谢益辉
                  </a>
                 </b>
                 <span class="says">
                  说道：
                 </span>
                </div>
                <!-- .comment-author -->
                <div class="comment-metadata">
                 <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-4363">
                  <time datetime="2013-06-09T05:25:26+00:00">
                   2013/06/09 05:25
                  </time>
                 </a>
                </div>
                <!-- .comment-metadata -->
               </footer>
               <!-- .comment-meta -->
               <div class="comment-content">
                <p>
                 嗯，也许现在ESS更新了，我已经有两年没用Emacs了。
                </p>
               </div>
               <!-- .comment-content -->
              </article>
              <!-- .comment-body -->
             </li>
             <!-- #comment-## -->
            </ol>
            <!-- .children -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="pingback odd alt thread-odd thread-alt depth-1" id="comment-4585">
          <div class="comment-body">
           Pingback：
           <a class="url" href="http://www.starblog.info/2013/07/31/create-r-package/" rel="external nofollow">
            在ubuntu中创建R package简单流程 | StarBlog
           </a>
          </div>
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-even depth-1 parent" id="comment-4707">
          <article class="comment-body" id="div-comment-4707">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/391780a30c59a27bdacdb7f505f128a9?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://mafing.sinaapp.com" rel="external nofollow">
               mafing
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-4707">
              <time datetime="2013-08-25T16:31:07+00:00">
               2013/08/25 16:31
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             谢兄，“自R 2.14.0开始，命名空间是R包的强制组成部分，所有的包必须有命名空间，如果没有的话，R会自动创建。”  难道到了3.0.1之后又不自动创建了？
             <br/>
             我打算编译qxde01同学的Rdouban包，https://github.com/qxde01/Rdouban
             <br/>
             结果出现了ERROR: a ‘NAMESPACE’ file is required
             <br/>
             参考了下这篇http://stackoverflow.com/questions/17196225/error-a-namespace-file-is-required
             <br/>
             是说3.0.1之后又不自动创建了？= =
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给mafing" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=4707#respond" onclick='return addComment.moveForm( "div-comment-4707", "4707", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment byuser comment-author-conan odd alt depth-2 parent" id="comment-4711">
            <article class="comment-body" id="div-comment-4711">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/732c1985d0f02cef1d2c69df55aca7d0?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                张 丹
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-4711">
                <time datetime="2013-08-25T22:58:54+00:00">
                 2013/08/25 22:58
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               本文是2011年文章，有一些操作已经变了。
              </p>
              <p>
               你可以看看R包开发新的方法，也许可以帮到你：
               <br/>
               <a href="http://blog.fens.me/r-build-package/" rel="nofollow">
                http://blog.fens.me/r-build-package/
               </a>
               <br/>
               <a href="http://blog.fens.me/r-package-faster/" rel="nofollow">
                http://blog.fens.me/r-package-faster/
               </a>
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给张 丹" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=4711#respond" onclick='return addComment.moveForm( "div-comment-4711", "4711", "respond", "2766" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
            <ol class="children">
             <li class="comment even depth-3" id="comment-4720">
              <article class="comment-body" id="div-comment-4720">
               <footer class="comment-meta">
                <div class="comment-author vcard">
                 <img src="http://sdn.geekzu.org/avatar/391780a30c59a27bdacdb7f505f128a9?s=74&amp;d=monsterid&amp;r=g"/>
                 <b class="fn">
                  <a class="url" href="http://mafing.sinaapp.com" rel="external nofollow">
                   mafing
                  </a>
                 </b>
                 <span class="says">
                  说道：
                 </span>
                </div>
                <!-- .comment-author -->
                <div class="comment-metadata">
                 <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-4720">
                  <time datetime="2013-08-26T21:36:59+00:00">
                   2013/08/26 21:36
                  </time>
                 </a>
                </div>
                <!-- .comment-metadata -->
               </footer>
               <!-- .comment-meta -->
               <div class="comment-content">
                <p>
                 看来还是要从头做个R包才会有体会呢，谢谢！
                </p>
               </div>
               <!-- .comment-content -->
              </article>
              <!-- .comment-body -->
             </li>
             <!-- #comment-## -->
            </ol>
            <!-- .children -->
           </li>
           <!-- #comment-## -->
           <li class="comment byuser comment-author-yihui bypostauthor odd alt depth-2 parent" id="comment-4712">
            <article class="comment-body" id="div-comment-4712">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://yihui.name" rel="external nofollow">
                 谢益辉
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-4712">
                <time datetime="2013-08-26T03:22:13+00:00">
                 2013/08/26 03:22
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               qxde01同学并没有按照我说的用roxygen2写文档，否则这个NAMESPACE文件是会被roxygen2自动创建的。我看他的包已经很久没有更新了，恐怕现在在R 3.0.1下还需要作一些调整才能安装。
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给谢益辉" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=4712#respond" onclick='return addComment.moveForm( "div-comment-4712", "4712", "respond", "2766" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
            <ol class="children">
             <li class="comment even depth-3" id="comment-4719">
              <article class="comment-body" id="div-comment-4719">
               <footer class="comment-meta">
                <div class="comment-author vcard">
                 <img src="http://sdn.geekzu.org/avatar/391780a30c59a27bdacdb7f505f128a9?s=74&amp;d=monsterid&amp;r=g"/>
                 <b class="fn">
                  <a class="url" href="http://mafing.sinaapp.com" rel="external nofollow">
                   mafing
                  </a>
                 </b>
                 <span class="says">
                  说道：
                 </span>
                </div>
                <!-- .comment-author -->
                <div class="comment-metadata">
                 <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-4719">
                  <time datetime="2013-08-26T21:36:07+00:00">
                   2013/08/26 21:36
                  </time>
                 </a>
                </div>
                <!-- .comment-metadata -->
               </footer>
               <!-- .comment-meta -->
               <div class="comment-content">
                <p>
                 嗯，非常感谢~
                </p>
               </div>
               <!-- .comment-content -->
              </article>
              <!-- .comment-body -->
             </li>
             <!-- #comment-## -->
            </ol>
            <!-- .children -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="pingback odd alt thread-odd thread-alt depth-1" id="comment-5102">
          <div class="comment-body">
           Pingback：
           <a class="url" href="http://cos.name/2013/11/building-r-packages-easily/" rel="external nofollow">
            极简 R 包建立方法 | 统计之都
           </a>
          </div>
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-even depth-1 parent" id="comment-5876">
          <article class="comment-body" id="div-comment-5876">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              Ruky
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-5876">
              <time datetime="2014-06-11T14:31:57+00:00">
               2014/06/11 14:31
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             我最近想在windows下做R包的开发，还涉及到调用C函数。但是这方面的资料好少也好老，要是看官方的writing R package和R ext又觉得太吃力，有没有什么好的教程可以介绍一下？多谢
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给Ruky" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=5876#respond" onclick='return addComment.moveForm( "div-comment-5876", "5876", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment odd alt depth-2 parent" id="comment-6882">
            <article class="comment-body" id="div-comment-6882">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/bcf35e0c682e249dd0a679fa839d124a?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                月珥
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-6882">
                <time datetime="2015-10-03T11:25:07+00:00">
                 2015/10/03 11:25
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               同求QAQ
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给月珥" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=6882#respond" onclick='return addComment.moveForm( "div-comment-6882", "6882", "respond", "2766" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
            <ol class="children">
             <li class="comment byuser comment-author-yihui bypostauthor even depth-3" id="comment-6884">
              <article class="comment-body" id="div-comment-6884">
               <footer class="comment-meta">
                <div class="comment-author vcard">
                 <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
                 <b class="fn">
                  <a class="url" href="http://yihui.name" rel="external nofollow">
                   谢益辉
                  </a>
                 </b>
                 <span class="says">
                  说道：
                 </span>
                </div>
                <!-- .comment-author -->
                <div class="comment-metadata">
                 <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-6884">
                  <time datetime="2015-10-04T03:46:00+00:00">
                   2015/10/04 03:46
                  </time>
                 </a>
                </div>
                <!-- .comment-metadata -->
               </footer>
               <!-- .comment-meta -->
               <div class="comment-content">
                <p>
                 可以看看
                 <a href="http://adv-r.had.co.nz/C-interface.html" rel="nofollow">
                  http://adv-r.had.co.nz/C-interface.html
                 </a>
                 不过个人觉得还是Rcpp更人性化一点
                 <a href="http://adv-r.had.co.nz/Rcpp.html" rel="nofollow">
                  http://adv-r.had.co.nz/Rcpp.html
                 </a>
                </p>
               </div>
               <!-- .comment-content -->
              </article>
              <!-- .comment-body -->
             </li>
             <!-- #comment-## -->
            </ol>
            <!-- .children -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-odd thread-alt depth-1" id="comment-6345">
          <article class="comment-body" id="div-comment-6345">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://weibo.com/2252299513" rel="external nofollow">
               ZSL_USTC
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-6345">
              <time datetime="2014-11-06T04:20:56+00:00">
               2014/11/06 04:20
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             <img src="http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/70/vw_org.gif"/>
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给ZSL_USTC" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=6345#respond" onclick='return addComment.moveForm( "div-comment-6345", "6345", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-even depth-1" id="comment-7125">
          <article class="comment-body" id="div-comment-7125">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/ad5e665e22c75524d97b7cd416766151?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              爱笑的女孩
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#comment-7125">
              <time datetime="2016-03-29T13:14:22+00:00">
               2016/03/29 13:14
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             请问下，R目录下没有发现zzz.R文件是什么问题呢？而且我在R安装包成功，但是包中调用Fortran的语句却不能执行
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给爱笑的女孩" class="comment-reply-link" href="http://cos.name/2011/05/write-r-packages-like-a-ninja/?replytocom=7125#respond" onclick='return addComment.moveForm( "div-comment-7125", "7125", "respond", "2766" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
        </ol>
        <!-- .comment-list -->
        <div class="comment-respond" id="respond">
         <h3 class="comment-reply-title" id="reply-title">
          发表评论
          <small>
           <a href="http://cos.name/2011/05/write-r-packages-like-a-ninja/#respond" id="cancel-comment-reply-link" rel="nofollow" style="display:none;">
            取消回复
           </a>
          </small>
         </h3>
         <form action="http://cos.name/wp-comments-post.php" class="comment-form" id="commentform" method="post" novalidate="">
          <p class="comment-notes">
           <span id="email-notes">
            电子邮件地址不会被公开。
           </span>
           必填项已用
           <span class="required">
            *
           </span>
           标注
          </p>
          <p class="comment-form-comment">
           <label for="comment">
            评论
           </label>
           <textarea aria-required="true" cols="45" id="comment" maxlength="65525" name="comment" required="required" rows="8">
           </textarea>
          </p>
          <p class="comment-form-author">
           <label for="author">
            姓名
            <span class="required">
             *
            </span>
           </label>
          </p>
          <p class="comment-form-email">
           <label for="email">
            电子邮件
            <span class="required">
             *
            </span>
           </label>
          </p>
          <p class="comment-form-url">
           <label for="url">
            站点
           </label>
          </p>
          <p class="form-submit">
          </p>
          <p style="display: none;">
          </p>
          <p style="display: none;">
          </p>
         </form>
        </div>
        <!-- #respond -->
       </div>
       <!-- #comments -->
      </div>
      <!-- #content -->
     </div>
     <!-- #primary -->
     <div class="sidebar-container" id="tertiary" role="complementary">
      <div class="sidebar-inner">
       <div class="widget-area">
        <aside class="widget widget_text" id="text-3">
         <h3 class="widget-title">
          关注统计之都
         </h3>
         <div class="textwidget">
          <ul>
           <li>
            新浪微博
            <a href="http://weibo.com/cosname">
             @统计之都
            </a>
           </li>
           <li>
            人人网
            <a href="http://renren.com/cosname">
             @统计之都
            </a>
           </li>
           <li>
            Twitter
            <a href="http://twitter.com/cos_name">
             @cos_name
            </a>
           </li>
          </ul>
         </div>
        </aside>
        <aside class="widget widget_text" id="text-6">
         <h3 class="widget-title">
          微信公众平台
         </h3>
         <div class="textwidget">
          <img src="http://cos.name/wp-content/uploads/2013/04/qrcode-8cm.jpg"/>
          <p style="font-size:12px;margin-left:15px">
           微信号 CapStat
          </p>
          <p>
           我们将第一时间向您推送主站和论坛的精彩内容，以及统计之都的线下活动、竞赛、培训和会议信息。
          </p>
         </div>
        </aside>
        <aside class="widget widget_text" id="text-8">
         <h3 class="widget-title">
          站内导航
         </h3>
         <div class="textwidget">
          <ul>
           <li class="page_item">
            <a href="http://cos.name/cn/">
             中文论坛
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/videos/">
             视频
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/salon/">
             统计沙龙
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/books/">
             图书出版
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/training/">
             教育培训
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/about/">
             关于我们
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/donate/">
             捐赠
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/chinar/">
             R语言会议
            </a>
           </li>
          </ul>
         </div>
        </aside>
        <aside class="widget widget_links" id="linkcat-2">
         <h3 class="widget-title">
          友情链接
         </h3>
         <ul class="xoxo blogroll">
          <li>
           <a href="http://stat.ruc.edu.cn" target="_blank" title="中国人民大学统计学院网站">
            中国人民大学统计学院
           </a>
          </li>
          <li>
           <a href="http://rucdmc.net">
            中国人民大学数据挖掘中心
           </a>
          </li>
          <li>
           <a href="http://birc.gsm.pku.edu.cn/" target="_blank">
            北京大学商务智能研究中心
           </a>
          </li>
          <li>
           <a href="http://sam.cufe.edu.cn/" target="_blank" title="中央财经大学统计与数学学院网站">
            中央财经大学统计与数学学院
           </a>
          </li>
          <li>
           <a href="http://tjx.cueb.edu.cn/" target="_blank" title="首都经济贸易大学统计学院网站">
            首经贸统计学院
           </a>
          </li>
          <li>
           <a href="http://www.shookr.com/">
            数客网大数据社区
           </a>
          </li>
          <li>
           <a href="http://www.xueqing.tv/" target="_blank" title="数据科学在线学习平台">
            雪晴数据网
           </a>
          </li>
          <li>
           <a href="http://iera.name/" target="_blank" title="IERA是一个旨在普及、传播和增进工业工程知识的非营利性网站">
            IERA（直通IE）
           </a>
          </li>
         </ul>
        </aside>
        <aside class="widget widget_categories" id="categories-2">
         <h3 class="widget-title">
          全部分类
         </h3>
         <label class="screen-reader-text" for="cat">
          全部分类
         </label>
         <select class="postform" id="cat" name="cat">
          <option value="-1">
           选择分类目录
          </option>
          <option class="level-0" value="925">
           cos访谈  (4)
          </option>
          <option class="level-0" value="659">
           图书出版  (5)
          </option>
          <option class="level-0" value="379">
           数学方法  (14)
          </option>
          <option class="level-1" value="381">
           分析与代数  (1)
          </option>
          <option class="level-1" value="380">
           概率论  (9)
          </option>
          <option class="level-1" value="382">
           随机过程  (5)
          </option>
          <option class="level-0" value="210">
           数据分析  (81)
          </option>
          <option class="level-1" value="203">
           多元统计  (3)
          </option>
          <option class="level-1" value="42">
           数据挖掘与机器学习  (42)
          </option>
          <option class="level-1" value="36">
           生物与医学统计  (17)
          </option>
          <option class="level-1" value="35">
           计量经济学  (4)
          </option>
          <option class="level-1" value="296">
           金融统计  (3)
          </option>
          <option class="level-1" value="303">
           风险精算  (7)
          </option>
          <option class="level-0" value="177">
           模型专题  (15)
          </option>
          <option class="level-1" value="38">
           回归分析  (10)
          </option>
          <option class="level-1" value="41">
           时间序列  (2)
          </option>
          <option class="level-0" value="784">
           每周精选  (24)
          </option>
          <option class="level-1" value="183">
           可视化  (9)
          </option>
          <option class="level-0" value="967">
           沙龙纪要  (3)
          </option>
          <option class="level-0" value="18">
           经典理论  (46)
          </option>
          <option class="level-1" value="37">
           抽样调查  (3)
          </option>
          <option class="level-1" value="4">
           统计推断  (26)
          </option>
          <option class="level-1" value="236">
           试验设计  (7)
          </option>
          <option class="level-1" value="39">
           非参数统计  (3)
          </option>
          <option class="level-0" value="1">
           统计之都  (279)
          </option>
          <option class="level-1" value="884">
           中国R会议  (2)
          </option>
          <option class="level-1" value="885">
           中国R语言会议  (5)
          </option>
          <option class="level-1" value="446">
           出国留学  (3)
          </option>
          <option class="level-1" value="179">
           推荐文章  (90)
          </option>
          <option class="level-1" value="3">
           新闻通知  (75)
          </option>
          <option class="level-1" value="263">
           统计刊物  (10)
          </option>
          <option class="level-1" value="174">
           网站导读  (40)
          </option>
          <option class="level-1" value="204">
           职业事业  (51)
          </option>
          <option class="level-1" value="213">
           高校课堂  (9)
          </option>
          <option class="level-0" value="178">
           统计计算  (28)
          </option>
          <option class="level-1" value="40">
           优化与模拟  (15)
          </option>
          <option class="level-1" value="43">
           贝叶斯方法  (6)
          </option>
          <option class="level-0" value="378">
           软件应用  (116)
          </option>
          <option class="level-1" value="44">
           统计图形  (36)
          </option>
          <option class="level-1" value="110">
           统计软件  (83)
          </option>
         </select>
        </aside>
        <aside class="widget widget_recent_comments" id="recent-comments-2">
         <h3 class="widget-title">
          最新评论
         </h3>
         <ul id="recentcomments">
          <li class="recentcomments">
           <span class="comment-author-link">
            fineboom
           </span>
           发表在《
           <a href="http://cos.name/2016/06/use-shiny-fleetly-set-up-visual-prototype-system/#comment-7317">
            利用shiny包快速搭建可视化原型系统
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            胡家新
           </span>
           发表在《
           <a href="http://cos.name/2016/06/r%e8%af%ad%e5%8d%83%e5%af%bb%e7%ac%ac%e4%b8%89%e6%9c%9f%ef%bc%9a%e5%bc%a0%e6%97%a0%e5%bf%8c%e7%a9%b6%e7%ab%9f%e7%88%b1%e8%b0%81%ef%bc%9f/#comment-7316">
            R语千寻第三期：张无忌究竟爱谁？
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            <a class="url" href="http://www.zijiacha.com/category.php?id=6" rel="external nofollow">
             南糯山普洱茶
            </a>
           </span>
           发表在《
           <a href="http://cos.name/2016/06/r%e8%af%ad%e5%8d%83%e5%af%bb%e7%ac%ac%e4%b8%89%e6%9c%9f%ef%bc%9a%e5%bc%a0%e6%97%a0%e5%bf%8c%e7%a9%b6%e7%ab%9f%e7%88%b1%e8%b0%81%ef%bc%9f/#comment-7315">
            R语千寻第三期：张无忌究竟爱谁？
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            J
           </span>
           发表在《
           <a href="http://cos.name/2016/05/value-of-the-reputation-from-the-data/#comment-7314">
            数据告诉你：高信誉的卖家应该收高价，还是收低价？
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            <a class="url" href="http://gg" rel="external nofollow">
             Hilda
            </a>
           </span>
           发表在《
           <a href="http://cos.name/2013/01/drawing-map-in-r-era/#comment-7311">
            R时代，你要怎样画地图？
           </a>
           》
          </li>
         </ul>
        </aside>
        <aside class="widget widget_rss" id="rss-282869971">
         <h3 class="widget-title">
          <a class="rsswidget" href="http://cos.name/cn/topics/feed/">
           <img src="http://cos.name/wp-includes/images/rss.png"/>
          </a>
          <a class="rsswidget" href="http://cos.name/cn/topics/feed/">
           中文论坛新帖
          </a>
         </h3>
         <ul>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/417372/">
            处理时间数据和产生时间序列的问题
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/6790/">
            《统计陷阱》下载 （How to lie with statistics）
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/818/">
            统计学的世界（第五版）
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/16574/">
            class(x) 返回值值是AsIs,AsIs代表什么，有什么用处？
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/417366/">
            如何用R绘制一个分类算法的决策规则
           </a>
          </li>
         </ul>
        </aside>
        <aside class="widget widget_text" id="text-2">
         <h3 class="widget-title">
          登录/RSS
         </h3>
         <div class="textwidget">
          <ul>
           <li>
            <a href="http://cos.name/wp-admin/">
             登录
            </a>
           </li>
           <li>
            <a href="http://cos.name/feed/" title="使用 RSS 2.0 同步站点内容">
             文章
             <abbr title="Really Simple Syndication">
              RSS
             </abbr>
            </a>
           </li>
           <li>
            <a href="http://cos.name/comments/feed/" title="RSS 上的最近评论">
             评论
             <abbr title="Really Simple Syndication">
              RSS
             </abbr>
            </a>
           </li>
          </ul>
         </div>
        </aside>
       </div>
       <!-- .widget-area -->
      </div>
      <!-- .sidebar-inner -->
     </div>
     <!-- #tertiary -->
    </div>
    <!-- #main -->
    <footer class="site-footer" id="colophon" role="contentinfo">
     <div class="site-info">
      版权所有 © 2014 统计之都 | 由
      <a href="http://wordpress.org/">
       WordPress
      </a>
      构建 | 主题修改自
      <a href="http://wordpress.org/themes/twentythirteen">
       Twenty Thirteen
      </a>
     </div>
     <!-- .site-info -->
    </footer>
    <!-- #colophon -->
   </div>
   <!-- #page -->
   <p style="margin:0;padding:0;height:1px;overflow:hidden;">
    <a href="http://www.wumii.com/widget/relatedItems" style="border:0;">
     <img src="http://static.wumii.cn/images/pixel.png"/>
    </a>
   </p>
  </div>
 </body>
</html>